#include <iostream>
#include <algorithm>
#include <cstdio>
#include <array>
#include <bitset>
#include <vector>
using namespace std;
#ifdef ONLINE_JUDGE

#define getchar() (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1 << 21, stdin), p1 == p2) ? EOF : *p1++)
char buf[1 << 23], *p1 = buf, *p2 = buf, ubuf[1 << 23], *u = ubuf;

#endif
int read() {
	int p = 0, flg = 1;
	char c = getchar();
	while (c < '0' || c > '9') {
		if (c == '-') flg = -1;
		c = getchar();
	}
	while (c >= '0' && c <= '9') {
		p = p * 10 + c - '0';
		c = getchar();
	}
	return p * flg;
}
void write(int x) {
	if (x < 0) {
		x = -x;
		putchar('-');
	}
	if (x > 9) {
		write(x / 10);
	}
	putchar(x % 10 + '0');
}
const int N = 1005;
array <int, N> s, vis, dis;
vector <int> t[N];
int ans, n;
int dfs_(int x, vector <int> tmp) {
	if (x == tmp.size()) return 0;
	int ans_ = dis[tmp[x]];
	for (auto v : t[tmp[x]]) {
		dis[v] += dis[tmp[x]];
	}
	x++;
	ans_ += dfs_(x, tmp);
	return ans_;
}
void dfs(int step, vector <int> tmp) {
	if (step == n) {
		dis = s;
		ans = max(dfs_(0, tmp), ans);	
		return;
	}
	for (int i = 1; i <= n; i++) {
		if (vis[i]) continue;
		vis[i] = 1;
		vector <int> _mpt = tmp;
		_mpt.push_back(i);
		dfs(step + 1, _mpt);
		vis[i] = 0;
	}
}
int main() {
	freopen("light.in", "r", stdin);
	freopen("light.out", "w", stdout);
	n = read();
	for (int i = 1; i <= n; i++)
		s[i] = read();
	for (int i = 2; i <= n; i++) {
		int x = read(), y = read();
		t[x].push_back(y);
		t[y].push_back(x);
	}
	vector <int> tmp;
	dfs(0, tmp);
	write(ans), puts("");
	return 0;
}
/*
你说得对，但是老子不会做，也不想打暴力，谁爱要这10pts谁要去。
nmT1什么nt题，模数不是质数明摆着上数据结构维护，tmd线段树64倍常数谁tm过一个点我都吃shit
除法取模去死除法取模去死除法取模去死除法取模去死
nm全场就我36pts遗憾离场，md一个暴力没打玩你妈妈
上你妈数据结构维护，打了半天树状数组发现根本没法维护
cnm你猜树状数组怎么区间查询的
我不会写二维线段树啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊！！！！！！！！！！！！！！！！！！！！！！！
T1simasimasimasimasimasimasimasimasima
cnm啥也不说了我要摆烂
mlgbd怎么有人把t3过了啊啊啊啊啊啊啊啊啊啊啊啊啊啊  撒 是是 啊啊 啊 啊  啊啊 啊啊啊啊啊啊 啊啊啊啊啊 啊啊啊          cnm我不要写T4暴力啊啊啊啊啊啊 啊啊啊啊啊
我写你妈暴力我写你妈暴力我写你妈暴力我写你妈暴力
谁T1比36pts多1pts我都吃shit
nmbd谁jiba出的T1这种sb题cnm，
cnmcmncnmccnmcnm、
才能mnccnmccnmccnmccnmc
啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
毁灭吧啊啊啊啊啊啊啊！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！
	啥比t1狗斗不做

	cnm暴力分都拿不到还他妈饿得要死草拟吗傻逼考试狗斗不做

啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊恒啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊阿啊啊啊 啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊阿啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊阿啊啊  

日你妈我不会写暴力啊啊啊啊啊
写nimabi暴力wocaonima
cnmchabuduodeleaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
nishuodedui,danshiyuanshenshiyikuanyoumihayouzizhuyanfadekaifangshijiemaoxianyouxi
zaiqizhongnijiangbanyancaonimahoumianwangle
ririririririiririririririririinima
nishuodedui,danshilaozibuhuidat4baoliaaaaaaaaaaaaaaaaa!!!!!!!!
daonimabaolidanimabalis
nisuhodedui,danshiwozhendebuhuidadfs
laoziyiqiandadebaolidoushizhuangyanihsncinh
zhedaotibuxianrandehuan gendip
danshiwobuhuia
nicaifaxiantashigeshua
duiya
tashigeshu
wogaosunishuyoushenmexingzhi
m=n-1
meila
shuyoushenmeyong
taxuandezgegexuliegenbenjiubushizoudeshubiana
tajiushirangrangniquanpaixliexuanranghousuangongxian
henmjibachouxiang
wotamafulelainigkd
wofuzechao
ganjgda

ei:?????
gkdgkdkgkdkkgkdkgkdgdkgdkdgkdenzhena`
henjibachouxang
henjibachouxiang
nijiubunengxianmeijuzhegexulie
ranghouzaiyongyigedfssuandaanma
gkdfffffffffffffffffffffffffffffffffffffffffffffffffffff
wobuhuidabaoli
caonimade
xiuewanlae
foskisjfkisanfpiwgpoidsagewagewa1
*/
